package com.cloudbroker.bcs.platform.dav.bizapi.service.chat;

import com.cloudbroker.bcs.common.annotation.NoLogin;
import com.cloudbroker.bcs.common.annotation.NoRefreshSession;
import com.cloudbroker.bcs.common.annotation.RequiredPermissions;
import com.cloudbroker.bcs.common.entity.HSBCPSBackNumVO;
import com.cloudbroker.bcs.common.entity.HSBCPSBackVO;
import com.cloudbroker.bcs.platform.dav.bizapi.constants.PermissionsValue;
import com.cloudbroker.bcs.platform.dav.bizapi.service.base.vo.HSBCPSVO;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.result.*;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.*;

public interface ChatBizService {
    
    /**
     * 获取大V个人信息
     * @param param
     * @return
     */
    public BrokerInfoBackForm queryBrokerInfo(HSBCPSVO param);
    
    /**
     * 获取大V个人信息（未登录获取昵称）
     * @param param
     * @return
     */
    @NoLogin
    public BrokerInfoNologinBackForm queryBrokerInfoNologin(BrokerInfoNologinForm param);
    
    /**
     * 聊天室/粉丝禁言
     * @param param
     * @return
     */
    public HSBCPSBackVO funcUserGag(UserGagForm param);
    
    /**
     * 查询当日打赏次数
     * @param param
     * @return
     */
    @RequiredPermissions(value = { PermissionsValue.CHAT })
    public RewardNumBackForm funcRewardNumGet(HSBCPSVO param);
    
    /**
     * 设置直播话题
     * @param param
     * @return
     */
    @RequiredPermissions(value = { PermissionsValue.CHAT })
    public HSBCPSBackVO funcChattingTopicSet(ChatTopicForm param);
    
    /**
     * 聊天室信息查询
     * @param param
     * @return
     */
    public ChatRoomInfoBackForm funcChatroomInfo(HSBCPSVO param);
    
    /**
     * 聊天室信息设置
     * @param param
     * @return
     */
    @RequiredPermissions(value = { PermissionsValue.CHAT })
    public HSBCPSBackVO funcChatroomSet(ChatRoomSetForm param);
    
    /**
     * 记录聊天信息
     * @param param
     * @return
     */
    @RequiredPermissions(value = { PermissionsValue.CHAT })
    public HSBCPSBackVO funcSetHisChat(SetHisChatForm param);
    
    /**
     * 从缓存获取聊天历史记录
     * @param param
     * @return
     */
    @RequiredPermissions(value = { PermissionsValue.CHAT })
    public ChatHisBackForm funcGetHisChat(GetCacheChatMsgForm param);
    
    /**
     * 从数据库查询聊天历史记录
     * @param param
     * @return
     */
    @RequiredPermissions(value = { PermissionsValue.CHAT })
    public ChatMsgPageResult funcPreviewHisChat(GetHisChatMsgForm param);
    
    /*
     * 导出聊天历史记录
     * @param param
     * @return
     */
    @RequiredPermissions(value = { PermissionsValue.CHAT })
    public ChatHisBackForm funcExportHisChat(GetCacheChatMsgForm param);
    
    /**
     * 大V设置前段主题方案
     * @param param
     * @return
     */
    @NoLogin
    public HSBCPSBackVO funcSchemeColorSelect(SchemeColorSelectForm param);
    
    /**
     * 大V视频直播设置
     * @param param
     * @return
     */
    public HSBCPSBackVO funcLiveBroadcastUrlSet(LiveBroadcastUrlForm param);
    
    /**
     * 聊天室视频直播获取
     * @param param
     * @return
     */
    public LiveBroadcastUrlDetailResult funcLiveBroadcastUrlGet(HSBCPSVO param);
    
    /**
     * 聊天室颜色方案设置查询
     * @param param
     * @return
     */
    public SchemeColorValueResult funcSchemeColorUsedGet(HSBCPSVO param);
    
    /**
     * 获取聊天室未读消息数
     * @param param
     * @return
     */
    @NoRefreshSession
    public HSBCPSBackNumVO funcNewMessageNum(HSBCPSVO param);
    
    /**
     * 清空聊天室在线消息数
     * @param form
     * @return
     */
    public HSBCPSBackVO funcClearMessageNum(HSBCPSVO form);
    
    /**
     * 用户拉黑/取消
     * @param form
     * @return
     */
    public HSBCPSBackVO funcUserBlock(UserBlockForm form);
    
    /*
    * 读取直播话题列表
    *
    */
    public ChatTopicListResult funcGetChattingTopicList(ChatTopicListForm form);
    
    /*
    * 设置CCLive聊天室ID    *
    */
    public HSBCPSBackVO funcSetCCRoomId(CCRoomInfoFrom form);
    
    /*
    * 转发CCLive聊天室请求    *
    */
    public CCRoomOperResult funcOperateCCRoom(CCRoomOperInfoForm form);
    
    @NoLogin
    public TenantInfoResult funcTenantInfoGet(TenantKeyForm form);

    public HSBCPSBackVO funcSetCcRoomStatus(CCRoomStatusForm form);

    public HSBCPSBackVO funcHisChatDel(HisChatDelForm form);
}
